package com.empsys.controller;

import com.empsys.config.exception.MyException;
import com.empsys.mapper.EmpMapper;
import com.empsys.pojo.Dept;
import com.empsys.pojo.Result;
import com.empsys.service.DeptService;

import lombok.extern.slf4j.Slf4j;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.support.JdbcTransactionManager;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * @author wzm
 * @create 2023-12-08 10:37
 * project_name:web2310
 * @Description
 */
@Slf4j
@RestController
@RequestMapping("/depts")  //将方法上公共的路径抽取到类上 匹配是就使用列的路径+方法的路径和方式来执行方法
public class DeptController {

    //引入lombok的日志出对象  使用注解更方便
  /*private  static Logger logger =  LoggerFactory.getLogger(DeptController.class);*/

    @Autowired
    private DeptService deptService; //创建Service对象


    //查询所有部门数据  区分开什么请求执行这个方法
    //该接口用于部门列表数据查询 get请求
//    @RequestMapping(value = "/depts",method = RequestMethod.GET)
    @GetMapping
    public Result list(){
        log.info("执行了查询全部部门操作");

//        public Result list(HttpServletRequest request, HttpSession session){}
        //获取session
        /*request.getSession() 利用请对象获取*/
//        session.getAttribute()
        //获取了请求头
//        log.info("Token的值为：{}",request.getHeader("Token"));
//          int i = 10  / 0 ;
        //模拟某条件下出现了自定义的异常
    /*   if(true){
           throw new MyException("我就要在这里整个异常！");
       }*/

        List<Dept> deptList = deptService.list();
        return Result.success(deptList);
    }


    //该接口用于根据ID删除部门数据
    @DeleteMapping("/{id}")
    public Result remove(@PathVariable Integer id) throws Exception {
        log.info("根据id删除部门"+id);
        //调用service层功能
        deptService.delete(id);

        //返回成功
        return Result.success();

    }

    //该接口用于添加部门数据
    @PostMapping
    public Result add(@RequestBody Dept dept){
        log.info("新增部门：{}",dept);
        //调用service
        deptService.add(dept);

        //响应
        return Result.success();

    }

    //该接口用于根据ID查询部门数据
     @GetMapping("/{id}")
    public Result getById(@PathVariable Integer id){
        log.info("根据id查询{}",id);
        Dept dept = deptService.getById(id);
        return Result.success(dept);

     }

     //该接口用于修改部门数据
    @PutMapping
    public Result update(@RequestBody Dept dept){
        log.info("根据id修改部门信息：{}",dept);
        deptService.update(dept);
        return Result.success();
    }

    }


